$(function(){

	var art_id = 0;
// Напоминание о выборе строки
	function selRowPlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите строку в таблице.", 'app-icon-stop32');
	}
	function selArtPlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите изделие.", 'app-icon-stop32');
	}
	

    function ManPlan(area_id, caller ) {
		var area = $('#'+area_id);
		var vdiv = area_id+'Tab';

		area.html('<table id="'+vdiv+'"></table>');

        var gritab;
        var col_order = [0, 1, 2, 3, 4];
        var col_names = ['ID', 'Шифр', 'Полное описание', 'К-во', 'Ед.' ];
        var col_model = [
		    { name: 'art_id', index: 'art_id', hidden: true, width: 1, editable: false, fixed: true, sorttype:'int' },
		    { name: 'art_code', index: 'art_code', hidden: false, width: 80, editable: false, sorttype:'text' },					
		    { name: 'art_full_name', index: 'art_full_name', hidden: false, width: 300, editable: false, sorttype:'text' },					
		    { name: 'art_amount', index: 'art_amount', hidden: false, width: 60, editable: false, align: 'right', sorttype:'int' }, 
		    { name: 'met_name', index: 'met_name', hidden: false, width: 60, editable: false, align: 'left', sorttype:'text' } 
        ];    
        var jqgo = {
            datatype: 'clientSide',
            autowidth: false,
            gridview: false,
            colNames: col_names,
            colModel: col_model,
            rowNum: 1000,
            loadui: 'disable',
            filterbar: false,
            shrinkToFit: true,
            width: $('#'+area_id).innerWidth() - 2,
            height: $('#'+area_id).innerHeight() - 26,
            sortname: 'art_code',
            sortorder: 'asc',
            sortable: true,
            caption: '',
            multiselect: true,
            multiselectWidth: 25,
            multiboxonly: true,
			onSelectRow: function( id, st, e ) {
				if( st ) {
				}
			}
        };
		
		// Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);
		
		this.Destroy = function() {
			gritab.GridDestroy(vdiv);
			area.empty();
		};
		this.Resize = function() {
			gritab.setGridWidth( area.innerWidth() - 2 );
			gritab.setGridHeight( area.innerHeight() - 26 );
		};
		this.getSelected = function() {
			return gritab.getGridParam('selarrrow');
		}
		this.delSelected = function() {
			var ids = gritab.getGridParam('selarrrow');
			var ilen = ids.length;
			if( ilen == 0 ) { selRowPlease(); return; }
			for( var i=ilen; i>0; i-- ) gritab.delRowData( ids[i-1] );
		}
		this.addRowData = function( id, data ) { gritab.addRowData( id, data ); }	// Добавить строку
		this.setRowData = function( id, data ) { gritab.setRowData( id, data ); }	// Устновить новые данные в строке ( необязательно все)
		this.delRowData = function( id ) { gritab.getRowData( id ); }				// Удалить строку
		this.getRowData = function( id ) { return gritab.getRowData( id ); }		// Получить содержимое строки
		this.getDataIDs = function() { return gritab.getDataIDs(); }				// Получить идентификаторы всех строк или пустой массив
		this.getRowCount = function() { return gritab.reccount; }					// Узнать количество строк
		this.getCol = function( name ) { return gritab.getCol( name, true ); }		// Возв.массив [ {id:rowid,value:clval},...]
    
	}  // End of create ManPlan function definition


    app.ShowManPlan = function (dlgID) {
        var oTab;
        var aldlg = $('#' + dlgID);

        if ($('#' + dlgID + 'Tab').length) return;
		
		var me = this;
		aldlg.dialog(
		{
			modal: false, title: 'Планирование затрат материалов',
			height: 332, width: 650, minHeight:332, minWidth:650,
			closeOnEscape: true,
			autoOpen: false,
			resizable: true,
			resize: function( e, ui ) { 
				oTab.Resize(); 
			},
			open: function () { 
				aldlg.load('index.php', {q:'manplan'}, createDialogContent );
				$('div[aria-describedby="' + dlgID + '"]').shadow(); 
			},
			close: function () {
				aldlg.empty();
				if (oTab) oTab.Destroy();
				aldlg.dialog("destroy");
			}
		});

		this.Close = function() { aldlg.dialog('close'); };
		aldlg.dialog('open');
		
		function createDialogContent() {
			// Дерево
			var dtree = aldlg.find("#art_plan_list");
			var oDtree, rootNode;
			// Кнопки
			var ins = aldlg.find("#art_plan_insert");
			var del = aldlg.find("#art_plan_delete");
			var rep = aldlg.find("#art_plan_report");
			// Поля
			var code = aldlg.find("#art_plan_code");
			var amount = aldlg.find("#art_plan_amount");
			var metnm = aldlg.find("#art_plan_metnm");
			var desc = aldlg.find("#art_plan_descrip");

			// Устанавливаем свойства			
			$.ui.dynatree.nodedatadefaults["icon"] = false;

			code.prop('readonly', true);
			desc.prop('readonly', true);
			
			// Получить список изделий
			dtree.dynatree({
				clickFolderMode: 1,
				initAjax: {
					url: "index.php",
					data: { q: "manplan/listart" }
				},
				onCreate: function(node, nodeSpan) {
					if( typeof node.data.errcode != 'undefined' ) {
                        app.alert('AlertDlg', 'Ошибка', node.data.errmess, 'app-icon-stop32', me.Close );					
					}
				},
				onClick: function(node, event) {
					// Hack for leaf expanding too 
					if( node.hasChildren() && node.getEventTargetType(event) == "title"){ node.toggleExpand(); }
					return true;
				},			
				onActivate: function(node) {
					art_id = node.data.key;
					code.val(node.data.title);
					amount.val('');
					metnm.text(node.data.met_name);
					desc.val(node.data.description);
				}
			});
			
			// Получим координаты дерева
			oDtree = dtree.dynatree("getTree");
			rootNode = dtree.dynatree("getRoot");
			
			// Создадим пока пустой список расчета
			oTab = new ManPlan("art_plan_model", me);

			// Обработчики кнопок
			
			// Добавить изделие в список
			ins.button({icons:{primary: "ui-icon-arrowthick-1-s"}});
			ins.click(function() { 
				if( art_id == 0 || code.val() == '' || desc.val() == '' || amount.val() == '' ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', 'Пожалуйста. Выберите изделие и укажите его количество.', 'app-icon-stop32');
					return false;
				}
				
				amount.val( amount.val().replace(/,/,'.') );
				var amt = Number(amount.val());
				if( amt <= 0 || !$.isNumeric(amount.val()) ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', 'Неправильно указано количество.', 'app-icon-stop32');
					return false;
				}

				var ids = oTab.getDataIDs();
				for( var i=0; i<ids.length; i++) {
					if( ids[i] == art_id ) {
						app.alert('AlertDlg', 'Опс-с-с !!!', 'Это изделие уже включено в список.', 'app-icon-stop32');
						return false;
					}
				}
				oTab.addRowData( art_id, { art_id:art_id, art_code:code.val(), 
						art_full_name:desc.val(), art_amount:amt, met_name: metnm.text() } );
			});
		
			// Изъять изделие
			del.button({icons:{primary: "ui-icon-arrowthick-1-n"}});
			del.click( function() {	oTab.delSelected(); } );
			
			// Сформировать отчет
			rep.button({icons:{primary: "ui-icon-document"}});
			rep.click(function() { 
				var data = oTab.getCol('art_amount');
				if( !data.length ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', "Вы не сформировали 'Список изделий, планируемых к производству'.", 'app-icon-stop32');
					return;
				}
				var fpost = dlgID+'_PostForm';
				aldlg.append('<form id="'+fpost+'" style="display:none" target="manplan" method="post" '+
							'action="index.php?q=manplan/report"></form>');
				for( var i=0; i<data.length; i++) {
					$('#'+fpost).append('<input name="art_ids[]" value="'+data[i].id+'">');
					$('#'+fpost).append('<input name="art_num[]" value="'+data[i].value+'">');
				}
				window.open(null, 'manplan', 'location=0,status=0,toolbar=0,menubar,resizable,scrollbars,height=600,width=600');
				$('#'+fpost).submit();
				$('#'+fpost).remove();
//				var docurl="index.php?q=manplan/report&"+$.param(data);
			});
		}
    }
});
